package com.starbugs.wehcat.pojo;

// lombok 库可以动态生成常见的getter和setter方法，以及equals()、hashCode()、toString()等方法
// !!! 要安装 intellj的 lombok插件
// @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor：作用于类上，用于生成构造函数
// @RequiredArgsConstructor 生成包含final和@NonNull注解的成员变量的构造器
// @Data 等价于上面的@Setter、@Getter、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode

// @Entity  应用于实体类，表明该实体类被JPA管理，将映射到指定的数据库表
// @Id      标记的属性对应数据库表的主键,一个实体类里面必须有一个
// @Basic   应用于实体类属性,表明该字段是要映射到数据库表,@Entity标注的实体类,所有属性默认为@Basic

// Lombok的@NoArgsConstructor注解能够帮助我们实现实体有一个无参的构造器。
// 我们不想直接使用它，因此通过将access属性设置为AccessLevel.PRIVATE使其变成私有的。
// 因为这里有必须要设置的final属性， 所以我们将force设置为true，这样Lombok生成的构造器就会将它们设置为null

// 使用@NoArgsConstructor注解之后，RequiredArgsConstructor就会被移除掉，所以要手动加上

import lombok.AccessLevel;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import javax.persistence.*;
/**
 * @author huahua
 */

@Data
public class Ingredient {

  @Id
  private final String id;
  private final String name;
  private final Type type;

  public static enum Type {
    WRAP, PROTEIN, CHEESE, VEGGIES, SAUCE
  }
}
